package com.yanhui.utils.image;

import com.yanhui.modal.image.poster.PosterText;
import com.yanhui.modal.image.poster.QrCodeImage;
import com.yanhui.modal.image.poster.SmallImage;
import com.yanhui.utils.qrCode._qrcodeUtils;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;

/**
 * 生成海报
 * @author colorbin
 * 创建时间: 2018年11月8日 下午1:01:37
 */
public class _posterUtils {

	/**
	 * 生成海报
	 * @param inputFile 海报图片
	 * @param posterText 文字(内容，大小，颜色，字体类型，字体所在海报的长度位置，字体所在海报的高度位置)
	 * @param qrCodeImage 二维码(二维码链接，二维码地址，二维码所在海报的长度位置，二维码所在海报的高度位置，二维码大小)
	 * @param smallFile logo图片(图片保存位置，图片所在海报的长度位置，图片所在海报的高度位置，图片大小，是否圆形)
	 * @param outputFile 输出图片位置
	 * @return
	 */
	public static boolean createPoster(String inputFile, PosterText[] posterText, QrCodeImage qrCodeImage, SmallImage smallFile, String outputFile) {
		try {
			//读入海报模板
			String fileWepappPath = inputFile;
			File posterFile = new File(fileWepappPath);
			BufferedImage posterDemo = ImageIO.read(posterFile);
			//写入用户名字
			Graphics outg = posterDemo.createGraphics();
			//画海报模板到新的面板
			outg.drawImage(posterDemo, 0, 0, posterDemo.getWidth(), posterDemo.getHeight(), null);
			for(int i = 0 ; i < posterText.length; i++){
				outg.setColor(Color.decode(posterText[i].getColor()));
				outg.setFont(new Font(posterText[i].getType(),Font.BOLD,posterText[i].getSize())); //字体、字型、字号
				outg.drawString(posterText[i].getText(), posterText[i].getWidth(), posterText[i].getHegiht()); //画文字
			}
			outg.dispose();
			// 生成二维码
			_qrcodeUtils.encode(qrCodeImage.getUrl(), qrCodeImage.getQrCodeFile());
			// 二维码小图片(地址,位置长度,位置宽度,图片大小)
			QrCodeImage ermw = new QrCodeImage(qrCodeImage.getQrCodeFile(),
					qrCodeImage.getX(), qrCodeImage.getY(), qrCodeImage.getH());
			// 头像小图片
			String head_path = smallFile.getSmallPath();
			int head_width = smallFile.getX();
			int head_height = smallFile.getY();
			int head_size = smallFile.getH();
			SmallImage head = new SmallImage(head_path, head_width, head_height, head_size);
			// 最终输出的用户海报
			String outfile_path = outputFile;
			File outfile = new File(outfile_path);
			File p = new File(outfile.getParent());
			if(!p.exists()){
				p.mkdirs();
			}
			if(!outfile.exists()){
				outfile.createNewFile();
			}
			int flag = smallFile.getCircularFlag(); //是否为圆形  1：是 0不是
			//多张图片合并
			ImageUtil.overlapImage(posterDemo, new SmallImage[] { head }, new QrCodeImage[]{ qrCodeImage }, outfile, flag);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
}
